/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.dommages.services.impl;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import fr.generali.accueilclient.commun.exception.AccueilClientBusinessException;
import fr.generali.accueilclient.dommages.assembler.ListeProduitsAutorisesMapper;
import fr.generali.accueilclient.dommages.om.IListeProduitsRecherche;
import fr.generali.accueilclient.dommages.services.IListeProduitsAutorisesService;
import fr.generali.souscriptiongestion.dommages.tosca.listerproduitsautorisesiard.services.IListerProduitsAutorisesIARDWebService;
import fr.generali.souscriptiongestion.dommages.tosca.listerproduitsautorisesiard.services.ListerProduitsAutorisesIARDException;
import fr.generali.souscriptiongestion.dommages.tosca.listerproduitsautorisesiard.reponse.DTOReponse;

/**
 * @author ebrouillard
 */
@Service
public class ListeProduitsAutorisesService implements IListeProduitsAutorisesService {

    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(ListeProduitsAutorisesService.class);

    /**
     * Le web service de recherche
     */
    @Autowired
    private IListerProduitsAutorisesIARDWebService listerProduitsAutorisesIARDWebService;

    /**
     * Appel mapper ListeProduitsAutorisesMapper
     */
    @Autowired
    @Qualifier("listeProduitsAutorisesMapper")
    private ListeProduitsAutorisesMapper listeProduitsAutorisesMapper;

    /**
     * {@inheritDoc}
     * 
     * @throws
     */
    public List<String> rechercheListeProduitsAutorises(IListeProduitsRecherche criteresProduitsRecherche)
                    throws AccueilClientBusinessException {

        List<String> listProduitsAutorises = null;

        if (criteresProduitsRecherche != null) {

            try {
                DTOReponse reponse =
                                listerProduitsAutorisesIARDWebService
                                                .listerProduitsAutorises(listeProduitsAutorisesMapper
                                                                .mapperDTODemande(criteresProduitsRecherche));

                listProduitsAutorises = listeProduitsAutorisesMapper.mapperListeProduitsAutorises(reponse);

            } catch (ListerProduitsAutorisesIARDException e) {
                LOGGER.error("Erreur liste de produits autorises TOSCA: '{}'.", e.getMessage());
                throw new AccueilClientBusinessException(e.getMessage(), e);
            }
        }

        return listProduitsAutorises;
    }
}
